#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <string.h>

char w_buf[1024] = {0};
char r_buf[1024] = {0};


int main(int argc, char const *argv[])
{
    // 1、创建一个文件
    int fd = open("my.txt", O_RDWR | O_CREAT | O_TRUNC, 0777);
    if (-1 == fd)
    {
        printf("open error!\n");
        return -1;
    }
    
    // 2、创建一个进程
    pid_t pid = fork();
    if(pid == 0)        // 子进程，输入数据(写数据到文件中)
    {
        while (1)
        {
            printf("子进程, 请输入数据:\n");
            bzero(r_buf, sizeof(r_buf));
            scanf("%s", w_buf);

            // 写入文件中
            lseek(fd, 0, SEEK_SET); // 将"光标"移动到文件开头
            write(fd, w_buf, strlen(w_buf));

        }
        
    }
    if(pid > 0)         // 父进程,输出数据(从文件中读取数据)
    {
        while (1)
        {
            // 读取文件中的数据
            lseek(fd, 0, SEEK_SET); // 将"光标"移动到文件开头
            bzero(r_buf, sizeof(r_buf));
            read(fd, r_buf, sizeof(r_buf));
            printf("父进程,输出数据：%s\n", r_buf);
            sleep(5);
        }
        
    }
    return 0;
}
